﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;


namespace KnowWare.Model
{
    public class Event
    {
        string _navn;


        DateTime _dato;

        
        bool _status;
        string holdFil;
        string kategoriFil;
        List<Kategori> kategorier = new List<Kategori>();
        
        #region konstruktører
        public Event(string navn, DateTime dato, string holdFil, string KategoriFil)
        {
            _navn = navn;
            _dato = dato;
            this.holdFil = holdFil;
            _status = false;
            this.kategoriFil = KategoriFil;

            KriterieExcelParser();
            HoldExcelParser();
        }
        #endregion

        #region metoder
        public string dansk(DateTime ind)
        {
            System.Globalization.CultureInfo thisCulture = new System.Globalization.CultureInfo("Da-dk");
            System.Globalization.DateTimeFormatInfo dtf = thisCulture.DateTimeFormat;
            return dtf.GetDayName(ind.DayOfWeek);
        }
        public Kategori FindKategori(string kategoriNavn)
        {
            for (int i = 0; i < kategorier.Count; i++)
            {
                if (kategorier[i].Navn == kategoriNavn)
                {
                    return kategorier[i];
                }
            }
            return null;
        }

        public void HoldExcelParser()
        {
            StreamReader sr = new StreamReader(holdFil, Encoding.Default);

            while (!sr.EndOfStream)
            {
                string line = sr.ReadLine();
                string[] række = line.Split(';');
                Hold hold = new Hold(int.Parse(række[1]), række[0], række[2]);
                for (int i = 0; i < kategorier.Count; i++)
                {
                    if (kategorier[i].Navn == række[2]) 
                    {
                        hold.KriterieFiller(kategorier[i].KriterieNavn);
                        kategorier[i].Tilføj(hold);
                    }
                }
            }
            sr.Close();
        }

        public void KriterieExcelParser()
        {
            StreamReader sr = new StreamReader(kategoriFil, Encoding.Default);

            while (!sr.EndOfStream)
            {
                string line = sr.ReadLine();
                string line2 = sr.ReadLine();
                string[] række = line.Split(';');
                string[] række2 = line2.Split(';');
                List<int> kriterieMax = new List<int>();
                List<string> kriterieNavn = new List<string>();
                
                for (int i = 1; i < række2.Length; i++)
                {
                    if (række[i] == "")
                    {
                        continue;
                    }
                    kriterieNavn.Add(række[i]);
                    kriterieMax.Add(int.Parse(række2[i]));
                }

                Kategori kategori = new Kategori(række[0], kriterieNavn, kriterieMax);
                kategorier.Add(kategori);
            }
            sr.Close();
        }

        #endregion

        #region properties
        public DateTime Dato
        {
            get { return _dato; }
            set { _dato = value; }
        }
        public string Navn
        {
            get { return _navn; }
            set { _navn = value; }
        }
        public string Filnavn
        {
            get
            {
                return holdFil;
            }
            set
            {
                holdFil = value;
            }
        }

        public List<Kategori> Kategorier
        {
            get { return kategorier; }
            set { kategorier = value; }
        }


        #endregion

    }
}
